package com.wnxy.sdd.controller;

import com.wnxy.sdd.common.constant.RedisCommon;
import com.wnxy.sdd.common.result.Result;
import com.wnxy.sdd.service.FileService;
import io.swagger.annotations.Api;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

@RestController
@RequestMapping("/file")
@Api(tags = "文件管理")
@CrossOrigin
public class FileController {

    public final FileService fileService;
    public final StringRedisTemplate stringRedisTemplate;

    // 通过Spring官方推荐的构造器注入取代@Autowired注入
    public FileController(FileService fileService,StringRedisTemplate stringRedisTemplate) {
        this.fileService = fileService;
        this.stringRedisTemplate = stringRedisTemplate;
    }

    /**
     * 文件上传
     * 接口地址： http://localhost:8020/file/upload
     * @param multipartFile SpringMVC用来接收上传文件的对象
     * @return 返回数据是上传的url地址
     */
    @PostMapping("/upload")
    public Result upload(@RequestPart @RequestParam("file") MultipartFile multipartFile){
        // 文件上传，返回文件url:
        // https://woniu-demo.oss-cn-shenzhen.aliyuncs.com/f88bddf28b9244e682a194b6610342f6.jpg
        String url = fileService.uploadFile(multipartFile);

        // 删除无效图片：首先需要存储所有的上传图片到redis的set集合中，集合的key：all_image
        // 获取文件名
        String fileName = url.substring(url.lastIndexOf("/") + 1);
        // 存储到set集合: sadd all_image 1.jpg
        stringRedisTemplate.opsForSet().add(RedisCommon.ALL_IMAGE,fileName);

        return Result.ok(url);
    }
}
